package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface IEmployeeMapper {
    @Mapper
    /**
     * 按排序规则模糊查询员工
     * @param name 员工姓名
     * @param job 特长
     * @param status 员工状态
     * @param rule 排序规则
     * @return 员工集合
     */
    public  List<EmployeeBean> findByItem(@Param("name") String name, @Param("job")String job,
                                          @Param("status")String status, @Param("rule")String rule);

    /**
     * 添加员工
     * @param employeeBean 员工对象
     */
    @Insert("insert into t_employee(e_name,e_birthday,e_inTime,e_job,e_status,e_money,e_phone,e_face)values(#{name},#{birthday},#{jobStartDay},#{job},#{status},#{money},#{phone},#{face})")
    public void add(EmployeeBean employeeBean);

    /**
     * 根据id删除员工 并修改状态为离职
     * 完成项目时间修改为当前时间
     * @param id id
     * @Param status 状态
     */
    @Delete("delete from t_employee where pk_emId=#{id}")
    public void  del(int id);
    @Update("update t_employee set e_status=#{status} where pk_emId=#{id}")
    public void updateS(@Param("id") int id,@Param("status") String status);

    /**
     * 按id修改员工信息
     * @param id id
     * @param phone 新电话
     * @param money 新工资
     */
    @Update("update t_employee set e_phone=#{phone},e_money=#{money} where pk_emId=#{id} ")
    public void updateM(@Param("id") int id,@Param("phone")String phone,@Param("money")int money);

    /**
     * 按id查询员工信息并查询参与所有的项目名称 以及项目完成项目的开始时间和结束时间
     * @param id 员工id
     * @return 员工对象
     */
    @Select("SELECT e.*,p.*,pr.`m_name` " +
            "FROM t_employee e JOIN `t_em_ma` p  ON e.`pk_emId`= p.`fk_emId` JOIN  `t_manager`  pr ON p.`fk_mangerId` = pr.`pk_mangerId` WHERE e.`pk_emId`=#{id}")
    @ResultMap("emMap2")
    public EmployeeBean findById(int id);

    /**
     * 动态查询没参与指定项目在职人员，其中项目ID和员工状态为固定条件， 姓名和专长为动态条件
     * @param  id
     * @param name 员工姓名
     * @param job 员工专长
     * @return 员工列表
     */
    public  List<EmployeeBean>findOther(@Param("id") int id,@Param("name") String name,@Param("job") String job);


    @Select("SELECT e.*,p.*,pr.`m_name` " +
            "FROM t_employee e JOIN `t_em_ma` p  ON e.`pk_emId`= p.`fk_emId` JOIN  `t_manager`  pr ON p.`fk_mangerId` = pr.`pk_mangerId` WHERE e.`pk_emId`=#{id} and pr.`m_status`='开发中'")
    @ResultMap("emMap2")
    public EmployeeBean findByIdRuntime(int id);
}
